package pruebas;

import niveles.Tablero;
import basicas.Posicion;
import juego.AlgoTank;
import juego.ParedLadrillos;
import juego.enums.tipoMovimiento;
import junit.framework.TestCase;

public class AlgoTankTest extends TestCase {
	
	private AlgoTank tanque;
	
	public void setUp() {		
		tanque = new AlgoTank(new Posicion(0, 0));
	}
	
	public void testCentrar() {
		tanque.getPosicion().mover(0.9, 0.8);
		tanque.centrar();
		assertTrue(tanque.getPosicion().getX() == 1);
		assertTrue(tanque.getPosicion().getY() == 1);
		
		assertFalse(tanque.getPosicion().getX() == 2);
		assertFalse(tanque.getPosicion().getY() == 0);		
	}
	
	public void testMover() {
		assertTrue(tanque.getMovimientosRestantes() == 0);
		tanque.mover(tipoMovimiento.abajo);
		assertFalse(tanque.getMovimientosRestantes() <= 0);
	}
	
	public void testGetPosicionDestino() {
		assertTrue(tanque.getPosicionDestino() == null);
		tanque.mover(tipoMovimiento.derecha);
		assertTrue(tanque.getPosicionDestino().getX() == 1);
		assertTrue(tanque.getPosicionDestino().getY() == 0);
		
		tanque.mover(tipoMovimiento.abajo);
		assertTrue(tanque.getPosicionDestino().getX() == 0);
		assertTrue(tanque.getPosicionDestino().getY() == 1);
	}
	
	public void testSePuedeMover() {
		Tablero tablero = new Tablero();		
		assertFalse(tablero.sePuedeMover(tanque, tipoMovimiento.arriba));
		
		tanque.getPosicion().mover(5, 5);
		assertTrue(tablero.sePuedeMover(tanque, tipoMovimiento.derecha));

		tablero.ocuparPosicion(new ParedLadrillos(new Posicion(6, 5)));		
		assertFalse(tablero.sePuedeMover(tanque, tipoMovimiento.derecha));
 	}
}
